package com.ruoyi.system.dto;

import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.DecimalMin;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 项目DTO
 */
@Data
public class ProjectDTO {

    private Long id;

    /**
     * 项目编号
     */
    private String projectNo;

    /**
     * 项目名称
     */
    private String projectName;

    /**
     * 客户名称
     */
    @NotBlank(message = "客户名称不能为空")
    private String customerName;

    /**
     * 联系电话
     */
    @NotBlank(message = "联系电话不能为空")
    @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号格式不正确")
    private String phone;

    /**
     * 性别：0-未知，1-男，2-女
     */
    private Integer gender;

    /**
     * 设计师ID
     */
    private Long designerId;

    /**
     * 设计师姓名
     */
    private String designerName;

    /**
     * 省份
     */
    @NotBlank(message = "省份不能为空")
    private String province;

    /**
     * 城市
     */
    @NotBlank(message = "城市不能为空")
    private String city;

    /**
     * 区/县
     */
    @NotBlank(message = "区/县不能为空")
    private String district;

    /**
     * 小区名称
     */
    @NotBlank(message = "小区名称不能为空")
    private String communityName;

    /**
     * 详细地址
     */
    @NotBlank(message = "详细地址不能为空")
    private String detailAddress;

    /**
     * 是否绑定H5账号：0-否，1-是
     */
    private Integer bindH5Account;

    /**
     * H5用户ID
     */
    private Long h5UserId;

    /**
     * H5用户名
     */
    private String h5UserName;

    /**
     * 客户来源：1-线上，2-线下
     */
    @NotNull(message = "客户来源不能为空")
    private Integer customerSource;

    /**
     * 项目类型：1-毛坯装修，2-老房改建，3-精装改造，4-别墅设计，5-其他
     */
    @NotNull(message = "项目类型不能为空")
    private Integer projectType;

    /**
     * 业务类型：1-内部员工，2-线上客户，3-线下客户
     */
    @NotNull(message = "业务类型不能为空")
    private Integer businessType;

    /**
     * 是否期房：0-否，1-是
     */
    @NotNull(message = "是否期房不能为空")
    private Integer isFutureHouse;

    /**
     * 期房日期
     */
    private LocalDate futureHouseDate;

    /**
     * 户型
     */
    private String houseType;

    /**
     * 房型：1-独栋别墅
     */
    private Integer houseStyle;

    /**
     * 建筑面积(㎡)
     */
    @NotNull(message = "建筑面积不能为空")
    @DecimalMin(value = "0.01", message = "建筑面积必须大于0")
    private BigDecimal buildingArea;

    /**
     * 实用面积(㎡)
     */
    @NotNull(message = "实用面积不能为空")
    @DecimalMin(value = "0.01", message = "实用面积必须大于0")
    private BigDecimal practicalArea;

    /**
     * 是否已加微信：0-否，1-是
     */
    private Integer hasWechat;

    /**
     * 微信号
     */
    private String wechatNo;

    /**
     * 施工项目ID
     */
    private Long constructionProjectId;

    /**
     * 施工项目名称
     */
    private String constructionProjectName;

    /**
     * 设计项目ID
     */
    private Long designProjectId;

    /**
     * 设计项目名称
     */
    private String designProjectName;

    /**
     * 备注
     */
    private String remark;

    /**
     * 所处进度：1-上门，2-量房，3-设计，4-报价，5-合同，6-施工，7-完工，8-结单
     */
    private Integer progress;

    /**
     * 跟进状态：1-已加微信，2-一次电话跟进，3-二次电话跟进，4-基础在施，5-主材在施，6-基础售后，7-症状售后，8-待跟进，9-跟进中，10-已延期，11-已暂停
     */
    private Integer followStatus;

    /**
     * 最新进展记录
     */
    private String latestRecord;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;
}
